package DB.dao;

import DB.dto.*;
import DB.exceptions.*;

public interface IntakeDao
{
	/** 
	 * Inserts a new row in the INTAKE table.
	 */
	public int insert(IntakeDto dto) throws IntakeDaoException;

	/** 
	 * Updates a single row in the INTAKE table.
	 */
	public void update(int pk, IntakeDto dto) throws IntakeDaoException;

	/** 
	 * Deletes a single row in the INTAKE table.
	 */
	public void delete(int pk) throws IntakeDaoException;

	/** 
	 * Returns the rows from the INTAKE table that matches the specified primary-key value.
	 */
	public IntakeDto findByPrimaryKey(int pk) throws IntakeDaoException;
	/** 
	 * Returns all rows from the INTAKE table that match the criteria ''.
	 */
	public IntakeDto[] findAll() throws IntakeDaoException;

	/** 
	 * Returns all rows from the INTAKE table that match the criteria 'ID_DOCTOR = :idDoctor'.
	 */
	public IntakeDto[] findWhereIdDoctorEquals(int idDoctor) throws IntakeDaoException;

	/** 
	 * Returns all rows from the INTAKE table that match the criteria 'ID_PATIENT = :idPatient'.
	 */
	public IntakeDto[] findWhereIdPatientEquals(int idPatient) throws IntakeDaoException;

	/** 
	 * Returns all rows from the INTAKE table that match the criteria 'PRIORITY = :priority'.
	 */
	public IntakeDto[] findWherePriorityEquals(int priority) throws IntakeDaoException;

	/** 
	 * Returns all rows from the INTAKE table that match the criteria 'DATEOFINTAKE = :dateofintake'.
	 */
	public IntakeDto[] findWhereDateofintakeEquals(long dateofintake) throws IntakeDaoException;
	/**
	 * Returns all rows from the INTAKE table that match the criteria 'ID_INTAKE = :idIntake'.
	 */
	public IntakeDto[] findWhereIdIntakeEquals(float idIntake) throws IntakeDaoException;

	/** 
	 * Sets the value of maxRows
	 */
	public void setMaxRows(int maxRows);

	/** 
	 * Gets the value of maxRows
	 */
	public int getMaxRows();

	/** 
	 * Returns all rows from the INTAKE table that match the specified arbitrary SQL statement
	 */
	public IntakeDto[] findByDynamicSelect(String sql, Object[] sqlParams) throws IntakeDaoException;

	/** 
	 * Returns all rows from the INTAKE table that match the specified arbitrary SQL statement
	 */
	public IntakeDto[] findByDynamicWhere(String sql, Object[] sqlParams) throws IntakeDaoException;

}
